package database;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DBHelper extends SQLiteOpenHelper {

	String createIdentificador = "CREATE TABLE Identificador (tipo TEXT primary key, id REAL)";
	
	
	String createMaterial = "CREATE TABLE Material (_id INTEGER primary key, " +
													"especificacion TEXT, " +
													"unidad TEXT, " +
													"costoUf TEXT, " +
													"observacion TEXT)";
	
	String createPresupuesto = "CREATE TABLE Presupuesto (id INTEGER, " +
														"fecha TEXT, " +
														"nombre TEXT primary key, " +
														"total TEXT)";
	
	String createPartidasPresupuesto = "CREATE TABLE PartidasPresupuesto (idPresupuesto TEXT, idPartida TEXT, cantidad TEXT, " +
																		"primary key(idPresupuesto, idPartida))";
	
	String createPartida = "CREATE TABLE Partida (id INTEGER, " +
													"nombre TEXT primary key, " +
													"observaciones TEXT)";
	
	String createMaterialesPartida = "CREATE TABLE MaterialesPartida (idPartida TEXT, idMaterial TEXT, rendimiento TEXT, "  +
																	"primary key(idPartida, idMaterial))";
	
	String createTrabajador = "CREATE TABLE Trabajador (especialidad INTEGER primary key, " +
														"rendimiento TEXT, " +
														"valorDia TEXT, " +
														"valorMensualUF TEXT, " +
														"unidad TEXT)";
	
	String createTrabajadoresPartida = "CREATE TABLE TrabajadoresPartida (idPartida INTEGER, " +
																		"idTrabajador INTEGER, " +
																		"FOREIGN KEY (idPartida) REFERENCES Partida(id), " +
																		"FOREIGN KEY (idTrabajador) REFERENCES Trabajador(id), " +
																		"primary key(idPartida, idTrabajador))";
	
	String createEmail = "CREATE TABLE Email (id INTEGER primary key AUTOINCREMENT, " +
											"fecha REAL, " +
											"destinatario TEXT)";
	
	String createPresupuestosEmail = "CREATE TABLE PresupuestosEmail (idEmail INTEGER, " +
																	"idPresupuesto INTEGER, " +
																	"FOREIGN KEY (idEmail) REFERENCES Email(id), " +
																	"FOREIGN KEY (idPresupuesto) REFERENCES Presupuesto(id), " +
																	"primary key(idEmail, idPresupuesto))";
	
	String createUnidad = "CREATE TABLE Unidad (id INTEGER primary key, " +
												"unidad TEXT)";
	
	String createEspecialidad = "CREATE TABLE Especialidad (id INTEGER primary key, " +
															"especialidad TEXT)";
	
	String createTipoMaterial = "CREATE TABLE TipoMaterial (id INTEGER primary key, " +
															"tipoMaterial TEXT)";
	
	String createUF = "CREATE TABLE UF (nombre TEXT primary key, " +
										"valor TEXT)";
	
	public DBHelper(Context context, String name, CursorFactory factory,
			int version) {
		super(context, name, factory, version);
	}

	
	@Override
	public void onCreate(SQLiteDatabase db)
	{
		db.execSQL(createMaterial);
		db.execSQL(createPresupuesto);
		db.execSQL(createPartidasPresupuesto);
		db.execSQL(createPartida);
		db.execSQL(createMaterialesPartida);
		db.execSQL(createTrabajador);
		db.execSQL(createTrabajadoresPartida);
		db.execSQL(createEmail);
		db.execSQL(createPresupuestosEmail);
		db.execSQL(createUnidad);
		db.execSQL(createEspecialidad);
		db.execSQL(createTipoMaterial);
		db.execSQL(createIdentificador);
		db.execSQL(createUF);
		db.execSQL("INSERT INTO UF (nombre,valor) VALUES ('uf','22625.17') ");
		
	}
	
	@Override
	public void onUpgrade(SQLiteDatabase db, int versionAnterior, int versionNueva) 
	{
		db.execSQL("DROP TABLE IF EXISTS Material");
		db.execSQL("DROP TABLE IF EXISTS Presupuesto");
		db.execSQL("DROP TABLE IF EXISTS PartidasPresupuesto");
		db.execSQL("DROP TABLE IF EXISTS Partida");
		db.execSQL("DROP TABLE IF EXISTS MaterialesPartida");
		db.execSQL("DROP TABLE IF EXISTS Trabajador");
		db.execSQL("DROP TABLE IF EXISTS TrabajadoresPartida");
		db.execSQL("DROP TABLE IF EXISTS Email");
		db.execSQL("DROP TABLE IF EXISTS PresupuestosEmail");
		db.execSQL("DROP TABLE IF EXISTS Unidad");
		db.execSQL("DROP TABLE IF EXISTS Especialidad");
		db.execSQL("DROP TABLE IF EXISTS TipoMaterial");
		db.execSQL("DROP TABLE IF EXISTS Identificador");

		onCreate(db);
	}
		
}